import axios from "axios";
import { Message } from 'element-ui'

const instance = axios.create({
    baseURL: 'http://vlearn2206b.daweilab.com/',
    timeout: 1000,
    headers: {
    }
});


instance.interceptors.request.use(config => {

    let token = localStorage.getItem('token-sqf')
    if (token) {
        // 如果 认证令牌 token 存在(不管令牌是否还有效, 也不管是否存在这个用户, 全部交给后台去判断) JWT
        // 这里只管是否为空, 如果不为空，则给请求头加上这个属性
        config.headers.Authorization = 'Bearer ' + token
        // config.headers['Authorization'] = Bearer   token
        // 以上两种形式都可以
    }

    // 最后 返回 conifg  让请求继续发送
    return config
} , err => {
    Promise.reject(err)
})

instance.interceptors.response.use(res => {
    // 因为每次从返回的结果对象中 取 想用的那部分数据 总是要写 res.data, 一直要多写一层data属性，而除了data属性外，res中虽然还有其他属性
    // 但是在处理业务的时候 这些属性 我们并不 关心 ，也不使用，所以在响应拦截这里，直接将data层的数据返回了，其他属性就不再返回
    if (res.code === 401) {
        localStorage.removeItem('token-sqf')
        location.href = '/login'
    } else if (res.data.code === 1) {
        // 成功的时候 扒一层皮
        return res.data
    } else if (res.data.code === -2) {
        // 成功的时候 扒一层皮
        Message({ message: res.msg, type: 'error', duration: 3 * 1000 })
        return Promise.reject(res.data.msg).catch(()=>{})
    } else {
        return Promise.reject(res.data.msg);
    }
   
}, err => {
    return Promise.reject(err);
})

export default instance